package com.itheima.stock.Thread;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/*
      public ThreadPoolExecutor(int corePoolSize,
                            int maximumPoolSize,
                            long keepAliveTime,
                            TimeUnit unit,
                            BlockingQueue<Runnable> workQueue,
                            ThreadFactory threadFactory,
                            RejectedExecutionHandler handler)

      corePoolSize：   核心线程的最大值，不能小于0
      maximumPoolSize：最大线程数，不能小于等于0，maximumPoolSize >= corePoolSize
      keepAliveTime：  空闲线程最大存活时间,不能小于0
      unit：           时间单位 TimeUnit.NANOSECONDS,TimeUnit.MICROSECONDS,TimeUnit.MILLISECONDS,TimeUnit.SECONDS,TimeUnit.MINUTES,TimeUnit.HOURS,TimeUnit.DAYS
      workQueue：      任务队列，不能为null
      threadFactory：  创建线程工厂,不能为null
      handler：        任务的拒绝策略,不能为null
       */
public class MyPool {
    public static void main(String[] args) {

        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
                2, // 核心线程数
                5, // 最大线程数
                1, // 线程存活时间
                TimeUnit.SECONDS, // 时间单位
                new ArrayBlockingQueue<>(3), // 任务队列
                Executors.defaultThreadFactory(), // 线程工厂
                new ThreadPoolExecutor.AbortPolicy() // 拒绝策略
        );

    }
}
